perm filename ERRATA.TEX[TEX,DEK]18 blob sn#737954 filedate 1984-01-20 generic text, type T, neo UTF8
% Bugs (sigh) in The TeXbook

\input manmac
\proofmodefalse

\def\rhead{Bugs in {\sl The \TeX book}}
\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
  \hrule\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule\nobreak\medskip}

\bugonpage 173, line 11 (1/2/84)

\indent|Clearly $a_i<b_i$ for~$i=1, 2, \ldots, n$.|

\bugonpage 242, line 29 (1/2/84)

\ninepoint\noindent
{\parfillskip=0pt
a relation, the solution is to insert `|{}|' ↑↑{lbrace rbrace}
at the beginning of the right-hand formula; \TeX
\par}

\bugonpage 256, starting with line $-17$ (11/1/83)

\ninepoint
\textindent{6)} Finally, the ↑|\dosupereject| macro is designed to clear
out any insertions that have been held over, whether they are illustrations
or footnotes or both: ↑↑|\insertpenalties| ↑↑|\supereject|
\begintt
\ifnum\insertpenalties>0
  \line{} \kern-\topskip \nobreak
  \vfill\supereject\fi
\endtt
The mysterious negative ↑|\kern| here cancels out the natural space of the
↑|\topskip| glue that goes above the empty |\line|; that empty line box
prevents the ↑|\vfill| from disappearing into a page break.  The vertical
list that results from |\dosupereject| is placed on \TeX's list of things
to put out next, just after the straggling insertions have been
reconsidered as explained in Chapter~15. Hence another super-eject will
occur, and the process will continue until no insertions remain.

\bugonpage 307, a slightly more explicit answer (11/3/83)

\ninepoint
\textindent{\bf6.3.}It represents the heavy bar that shows up in
your output. \ (This bar wouldn't be present if\/ ↑|\overfullrule| had been
set to |0pt|, nor is it present in an underfull box.)

\bugonpage 333, beginning of the final paragraph (12/19/83)

\ninepoint
{\sl Note:\/} The stated preamble solves the problem and demonstrates
that \TeX's line-breaking capability can be used within tables. But this
particular table is not really a good example of the use of\/ |\halign|,
because \TeX\ could typeset it directly, using ↑|\everypar| in an
appropriate manner to set up the hanging indentation, and using |\par|
instead of\/ |\cr|. For example, one could say

\bugonpage 359, starting with line 2 (11/16/83)

\ninepoint
\beginlines
|\mathchardef\ldotp="602E\mathchardef\cdotp="6201\mathchardef\colon="603A|
|\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}|
|\def\cdots{\mathinner{\cdotp\cdotp\cdotp}}|
|\def\vdots{\vbox{\baselineskip=4pt \lineskiplimit=0pt|
|    \kern6pt \hbox{.}\hbox{.}\hbox{.}}}|
|\def\ddots{\mathinner{\mskip1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mskip2mu|
|    \raise4pt\hbox{.}\mskip2mu\raise1pt\hbox{.}\mskip1mu}}|
\endlines

\bugonpage 359, starting with line 19 (11/3/83)

{\ninepoint\parindent=0pt
|\def|↑|\overbrace|%
  |#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3pt}|\parbreak%
|     \downbracefill\crcr\noalign{\kern3pt\nointerlineskip}|\parbreak%
|     $\hfil\displaystyle{#1}\hfil$\crcr}}}|↑|\limits||}|

|\def|↑|\underbrace||#1{\mathop{\vtop{\ialign{##\crcr|\parbreak%
|     $\hfil\displaystyle{#1}\hfil$\crcr|%
  |\noalign{\kern3pt\nointerlineskip}|\parbreak%
|     \upbracefill\crcr\noalign{\kern3pt}}}}\limits}|
}

\bugonpage 364, starting with line 10 (11/1/83)

{\ninepoint\parindent=0pt
|\def\dosupereject{\ifnum\insertpenalties>0 % something is being held over|%
\parbreak
|  \line{}\kern-\topskip\nobreak\vfill\supereject\fi}|
}

\bugonpage 379, line 1 (1/12/84)

\ninepoint\noindent
A particular item can be selected by its position number from the left:

\bugonpage 381, lines 24 and 25 (12/15/83)

\ninepoint
{\parfillskip=0pt
Instead of listing a file verbatim, you might want to define a |\verbatim|
macro such that `|\verbatim{$this$|{\tt\ is }|{\it!}}|' yields
`|$this$|{\tt\ is }|{\it!}|'. It's somewhat\par}

\bugonpage 385, lines 22 and 23 (1/12/84)

\ninepoint\noindent
macro, a parameter, or a token list
variable; (b)~when \TeX\ must determine whether the token
|&|~or ↑|\span| ↑↑{ampersand}
or ↑|\cr| or~↑|\crcr| is the end of an entry within an ↑{alignment}.

\bugonpage 387, two paragraphs in right column (1/18/84)

\setbox0=\vbox{
\eightpoint
\tolerance=9999
\hbadness=2300
\finalhyphendemerits=3000000
\doublehyphendemerits=1000000
\parskip=1pt
\parindent=1.5em
\frenchspacing
\hsize=166.8125pt
\def\\#1{\raise.5pt\hbox{$\scriptscriptstyle
    \ifx#1`\langle\!\langle\else\rangle\!\rangle\fi$}% Spanish quote marks
  \ifx#1`\nobreak\hskip0pt \fi} % allow hyphenation
\item{A.} Exactamente. Pero los profesores son tan conservadores
que temer\'\i an espantar al tipo de estudiante \\`apisonadora\\'
que hace lo que le proponen para casa, obe\-dien\-te\-mente y de forma
mec\'anica. Adem\'as, no creo que les gustase el trabajo adicional
de calificar respuestas a preguntas abiertas.

\item{}La forma tradicional es dejar la parte creativa para los cursos
altos. Durante diecisiete a\~nos o m\'as se ense\~na al es\-tu\-diante a
aprobar, luego de golpe, cerca de la graduaci\'on, se le pide que haga
algo original.

}\rightline{\box0}

\bugonpage 395, lines 21 and 22 (1/12/84)

\ninepoint\noindent
{\parfillskip=0pt
Notice that the macros need to do their own checking for ligatures, and
they also take appropriate actions when a paragraph begins with an opening
quote.  Since |\kern|\par}

\bugonpage 399, line 1 (1/10/84)

\ninepoint
{\parfillskip=0pt
Inside the output routine, |\box\footins| will now be a vbox of hboxes, and
\par}

\bugonpage 408, line 15 (12/14/83)

\noindent
|    P. O. Box 1009, Haga Alto, CA 94321 USA}|

\smallskip\noindent
(Also change the ZIP code in the return address on the envelope
illustrated at the bottom of page 405.)

\bugonpage 428, in the table of sixteen basic fonts (12/19/83)

\ninepoint\noindent
[The special fonts called |cmi10| and |cmi7| and |cmi5| should really be
called |cmmi10| and |cmmi7| and |cmmi5|.]

\bugonpage 445, line 6 (11/11/83)

\ninepoint
\line{if $(a-{1\over2}\theta)-
\bigl(h(z)-v\bigr)<\varphi$, increase~$v$ by the difference. Finally
construct a vbox of}

\bugonpage 449, line 12 (1/18/84)

\line{immediately clear why the `n' should
be attached to the `e' in one case but not}

\bugonpage 459, left column, line 2 (1/18/84)

\eightpoint
al-Khw\↑arizm\↑\i, abu Ja`far Mu\d{h}ammad

\bugonpage 462, index entry for {\tt\char`\\colon} (11/16/83)

\ninepoint Add page \underbar{359} to this list.

\bugonpage 464, index entry for {\tt\char`\\dump} (1/10/84)

\ninepoint Add page {\it 344\/} to this list.

\bugonpage 464, right column, line 5 (1/5/84)

\eightpoint
Dvo\v r\'ak, Anton\'\i n Leopold, 409.

\bugonpage 469, index entry for {\tt\char`\\kern} (11/1/83)

\ninepoint Add page {\it 256\/} to this list.

\bugonpage 470, index entry for {\tt\char`\\limits} (11/3/83)

\ninepoint Add page {\it 359\/} to this list.

\bugonpage 472, right column, line 28 (1/3/84)

\eightpoint\indent
\hbox to0pt{\hss\lower1pt\hbox{*}}|\nullfont|, 14, 153, 271, 433.

\bugonpage 480, index entry for {\tt\char`\\vbox} (11/1/83)

\ninepoint Delete page 256 from this list.

\bye